#ifndef Revoice_H
#define Revoice_H

#include <QString>
#include <QFile>
#include <QTableWidget>
#include <QVector>
#include <QRadioButton>
#include "ui_mainwindow.h"
#include "audio.h"

class Revoice : public QObject
{
    Ui::MainWindow *ui;

    Q_OBJECT

public:
    static Audio AUD;

    Revoice(QString parentPath, QTreeWidgetItem *parentSound, Ui::MainWindow *p_ui);

    QVector <QTableWidgetItem* > getItems();

    static void setVarNValue(QString& fullstring, QString& var, QString& value);

    bool loadInfo(QFile *infoFile);
    void makeCopy(Revoice *copy);

    // Инкапсуляция
    QTreeWidgetItem* getParentSound()  { return parentSound;    }

    QString getType()       { return type;      }
    QString getFilename()   { return filename;  }
    QString getPath()       { return path;      }
    QString getName()       { return name;      }
    QString getAuthor()     { return author;    }
    QString getLength()     { return length;    }

    void setFilename( QString filename) {
        this->filename = filename;
        path += "/" + filename;
        if(pToOriginal) pToOriginal->setFilename(filename);
    }

    void setName( QString name)         {
        this->name     = name;
        if( pToOriginal) pToOriginal->setName(name); }

    void setAuthor( QString author)     {
        this->author   = author;
        if( pToOriginal) pToOriginal->setAuthor(author); }

    void setLength( QString length)     {
        this->length   = length;
        if( pToOriginal) pToOriginal->setLength(length);}

    void setPath( QString path)         {
        this->path     = path;
        if( pToOriginal) pToOriginal->setPath(path);}

    bool isGeneral() { return general; }

    QRadioButton* getRadioButton();

    Revoice* pToOriginal;   // Если данный объект копия, то тут хранится указатель на оригинальный объект

public slots:

    void setGeneral( bool general)      {
        this->general  = general;
        if( pToOriginal) pToOriginal->setGeneral(general);}

protected:
    QString type;       // Тип файла
    QString length;     // Длина файла строкой  (Берется из info.dat дабы не вычислять и тем самым добиться чуть большего быстродействия)
    QString filename;   // Имя файла
    QString path;       // Путь к файлу

    QString name;       // Название переозвучки
    QString author;     // Автор переозвучки
    bool    general;    // Является ли эта переозвучка основной?

    QTreeWidgetItem* parentSound;

    QVector< QTableWidgetItem* > items; // 0 - название, 1 - Автор, 2 - длительность
    QRadioButton *radioButtonGeneral;   // 3 - RadioButton "Основной вариант"
};

#endif // TRANSLATEVERSION_H
